From 4878a87b440b782f2753f217c3e37d959717023a Mon Sep 17 00:00:00 2001 From: "kaf24@firebug.cl.cam.ac.uk" Date: Tue, 11 Apr 2006 10:44:07 +0100 Subject: [PATCH] The maximum instruction length for both x86-32 and x86-64 is 15 bytes (including all prefixes, opcode, ModRM, SIB, displacement, and immediate bytes). This patch adjusts the MAX_INST_LEN to the correct value. This should reduce the size of some variables in the hypervisor code. This patch also does some minor code clean-up in the vm exit handler for VMX. Signed-off-by: Khoa Huynh --- xen/arch/x86/hvm/vmx/vmx.c | 10 ++++------ xen/include/asm-x86/hvm/io.h | 2 +- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c index 5f7fa0221e..059b188f91 100644 --- a/xen/arch/x86/hvm/vmx/vmx.c +++ b/xen/arch/x86/hvm/vmx/vmx.c @@ -1947,7 +1947,7 @@ static inline void vmx_vmexit_do_extint(struct cpu_user_regs *regs) && !(vector & INTR_INFO_VALID_MASK)) __hvm_bug(regs); - vector &= 0xff; + vector &= INTR_INFO_VECTOR_MASK; local_irq_disable(); TRACE_VMEXIT(1,vector); @@ -2077,10 +2077,8 @@ asmlinkage void vmx_vmexit_handler(struct cpu_user_regs regs) return; } - { - __vmread(GUEST_RIP, &eip); - TRACE_VMEXIT(0,exit_reason); - } + __vmread(GUEST_RIP, &eip); + TRACE_VMEXIT(0,exit_reason); switch (exit_reason) { case EXIT_REASON_EXCEPTION_NMI: @@ -2097,7 +2095,7 @@ asmlinkage void vmx_vmexit_handler(struct cpu_user_regs regs) if ((error = __vmread(VM_EXIT_INTR_INFO, &vector)) || !(vector & INTR_INFO_VALID_MASK)) __hvm_bug(®s); - vector &= 0xff; + vector &= INTR_INFO_VECTOR_MASK; TRACE_VMEXIT(1,vector); perfc_incra(cause_vector, vector); diff --git a/xen/include/asm-x86/hvm/io.h b/xen/include/asm-x86/hvm/io.h index b315997102..0d4b36b0ad 100644 --- a/xen/include/asm-x86/hvm/io.h +++ b/xen/include/asm-x86/hvm/io.h @@ -77,7 +77,7 @@ struct instruction { __u32 flags; }; -#define MAX_INST_LEN 32 +#define MAX_INST_LEN 15 /* Maximum instruction length = 15 bytes */ struct mmio_op { int flags; -- 2.30.2